<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-3.6.0.min.js"></script>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        li {
            list-style: none;
        }

        .wrap {
            padding: 8px;
        }

        .list {
            margin-top: 10px;
        }

        .list li {
            height: 40px;
            line-height: 40px;
            text-indent: 10px;
            border: 1px dashed #333;
        }

        .list li+li {
            /* border-top: 0; */
        }

        button {
            padding: 2px 10px;
        }

        .box {
            width: 200px;
            height: 200px;
            text-align: center;
            line-height: 200px;
            border: 2px solid #333;
            background-color: #6ff;
            margin: 50px auto;
            padding: 10px;
            user-select: none;
            /* display: none; */
        }
    </style>
</head>

<body>
    <button>清除</button>
    <button>清除</button>
    <button>清除</button>
    <div class="box">

    </div>
</body>
<script>
    // 普通绑定
    // $(ele).on(type,data,handlerFn)

    // ele        绑定事件的元素怒
    // type       绑定事件的类型
    // data       可选参数 => 绑定事件时传入的数据
    // handlerFn  事件触发时执行的回调函数
    function HanderClick_1() {
        var num = Math.round(Math.random() * 100);
        $(this).text(num);
    }
    function HanderClick_2(e) {
        console.log("data", e.data);
    }
    function HanderClick_3(e) {
        console.log("box被点击", e);
    }

    $(".box").on("click", HanderClick_1);
    $(".box").on("click", { a: 1, b: 2 }, HanderClick_1)
    $(".box").click(HanderClick_3)

    $(".box").on("dblclick", function () {
        console.log("双击666");
    })

    $(".box").mouseenter(function () {
        $(this).css({ background: "red" })
    }).mouseleave(function () {
        $(this).css({ background: "#6ff" })
    })

    // $(ele).off(type, handlerFn)

    // (1) 对应回调函数  
    // (2) 对应事件类型清除 => 该元素所有同类型的事件都会被清除
    // (3) 对应元素清除所有类型的事件

    /*  [{
         ele: box,
         event: {
             click: [callback1, callback2],
             dblclick: []
         }
     }, {
             ele: box,
             event: {
                 click: [callback1, callback2],
                 dblclick: []
             }
     }] */


    $("button").eq(0).click(function () {
        $(".box").off("click", HanderClick_1);
        $(".box").off("click", { a: 1, b: 2 }, HanderClick_1)
        $(".box").off("click", HanderClick_3);
    })

    $("button").eq(1).click(function () {
        $(".box").off("click");
    })
    $("button").eq(2).click(function () {
        $(".box").off();
    })






</script>

</html>